    if (l1 == NULL && l2 == NULL)
        return NULL;
    LTNode*  head = NULL;
    while (l1 || l2)
    {
        int sum = 0;
        if (l1 != NULL)
        {
            sum += l1->val;
            l1 = l1->next;
        }
        if (l2 != NULL)
        {
            sum += l2->val;
            l2 = l2->next;
        }
        LTNode* newNode = (LTNode*)malloc(sizeof(LTNode));
        newNode->val = sum;
        newNode->next = NULL;

        newNode->next = head;
        head = newNode;
    }
    LTNode* cur = head;
    int flg = 0;
    while (cur)
    {
        int sum = 0;
        if (cur)
        {
            sum += cur->val;
        }
        sum += flg;
        flg = sum >= 10 ? 1 : 0;
        sum %= 10;
        cur->val = sum;
        cur = cur->next;
    }
    if (flg)
    {
        LTNode* cur = (LTNode*)malloc(sizeof(LTNode));
        cur->val = flg;
        cur->next = NULL;        
    }
    LTNode* n1 = NULL;
    LTNode* n2 = head;
    while (n2)
    {
        LTNode* n3 = n2->next;
        n2->next = n1;
        n1 = n2;
        n2 = n3;
    }
    return n1;